from datetime import datetime
import pickle
from app.services.db import memory

#obj = ExampleObject()
#pickled_object = pickle.dumps(obj)
#r.set('some_key', pickled_object)
#unpacked_object = pickle.loads(r.get('some_key'))
#obj == unpacked_object

def add_data(obj: dict, key: str, value: str | int | datetime):
    obj[key] = value
    return pickle.dumps(obj)

def set_announcement_channel(user_id: int, channel_id: int):
    """
    При создании анонса запоминаем в редис канал, куда пользователь создает анонс
    """
    memory.set(f"{user_id}-a", add_data({}, "channel_id", channel_id), ex=600)


def get_announcement(user_id: int) -> dict | None:
    data = memory.get(f"{user_id}-a")
    if data:
        return pickle.loads(data)


def add_announcement_date(user_id: int, date: datetime):
    data = get_announcement(user_id)
    if data is None:
        raise Exception("Не могу добавить дату в редис. Что-то пошло не так")
    memory.set(
            f"{user_id}-a",
            add_data(data, "date", date),
            ex=600
    )


def add_announcement_text(user_id: int, text: str):
    data = get_announcement(user_id)
    if data is None:
        raise Exception("Не могу добавить text в редис. Что-то пошло не так")
    memory.set(
            f"{user_id}-a",
            add_data(data, "text", text),
            ex=600
    )

def add_announcement_picture(user_id: int, picture_id: str):
    data = get_announcement(user_id)
    if data is None:
        raise Exception("Не могу добавить text в редис. Что-то пошло не так")
    memory.set(
            f"{user_id}-a",
            add_data(data, "picture_id", picture_id),
            ex=600
    )
